/*
logger是管理日志的类
异步记录日志，可以使用spdlog::async_logger
日志记录器工厂类：async_factory_impl
*/

#include <spdlog/spdlog.h>
#include <spdlog/sinks/stdout_color_sinks.h>
#include <spdlog/sinks/basic_file_sink.h>
#include <iostream>

int main()
{
    //设置一些全局的刷新策略
    //每秒刷新
    spdlog::flush_every(std::chrono::seconds(1));
    //遇到debug以上等级的日志立即刷新
    spdlog::flush_on(spdlog::level::level_enum::debug);
    //设置全局的日志等级 -- 无所谓 --每个日志可以独立进行设置
    spdlog::set_level(spdlog::level::level_enum::debug);
    //创建同步日志器（标准输出/文件） -- <!--工厂接口默认创建的就是同步日志器， 所以下面这两句代码就不需要了>
    //auto logger = spdlog::stdout_color_mt("default-logger"); //里面是日志器的名字
    auto logger = spdlog::basic_logger_mt("file-logger", "sync.log"); //里面是日志器的名字
    //设置日志器的刷新策略，以及设置日志器的输出等级
    // logger->flush_on(spdlog::level::level_enum::debug);
    // logger->set_level(spdlog::level::level_enum::debug); 
    //设置日志输出格式
    logger->set_pattern("[%n][%H:%M:%S][%t][%-7l] %v "); //%v 日志输出的是指内容
    //进行简单的日志输出
    logger->trace("你好!{}", "小明");
    logger->debug("你好!{}", "小明");
    logger->info("你好!{}", "小明");
    logger->warn("你好!{}", "小明");
    logger->critical("你好!{}", "小明");
    std::cout << "日志输出演示完毕" << std::endl;
    return 0;
}